16fd294748e7ebb439f3eb09027a1ae4bde2ca61,src/main/java/com/myapp/repository/UserRepositoryImpl.java,UserRepositoryImpl,findFollowings,#User#Optional#Optional#number#,26

Before Change


        );
        query.orderBy(cb.desc(root.get("id")));

        return entityManager
                .createQuery(query)
                .setMaxResults(Optional.ofNullable(maxSize).orElse(20))
                .getResultList();
    }

After Change


                                     Optional<Long> sinceId,
                                     Optional<Long> maxId,
                                     Integer maxSize) {
        final QUser qUser = QUser.user;
        final QRelationship qRelationship = QRelationship.relationship;

        final JPQLQuery<Relationship> relationshipSubQuery = JPAExpressions.selectFrom(qRelationship)
                .where(qRelationship.follower.eq(user)
                        .and(qRelationship.followed.eq(qUser))
                );
        return queryFactory.selectFrom(qUser)
                .where(relationshipSubQuery.exists()
                        .and(sinceId.map(qUser.id::gt).orElse(null))
                        .and(maxId.map(qUser.id::lt).orElse(null))
                )
                .orderBy(qUser.id.desc())
                .limit(Optional.ofNullable(maxSize).orElse(20))
                .fetch();
    }